package cn.itcast.reflect;

import cn.itcast.domain.Person;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 * 获取构造方法
 */
public class ReflectDemo3 {

    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        Class personClass = Person.class;

        //区分构造方法的只有传的参数不一样
        //所以获取构造方法通过参数类型
        //不是名字
        Object o1 = personClass.newInstance();  //也可以这样直接创建
        Constructor constructor = personClass.getConstructor(String.class, Integer.class, String.class);
        //用构造方法创建对象
        Object o = constructor.newInstance("张三", 234, "vbfd");

        /**
         * 这里面也可以获取私有构造方法
         * 也是暴力反射
         */
    }
}
